{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1e233200-c155-4c4d-9ea1-7f4b9e2a9401",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\python37\\lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
      "  from .autonotebook import tqdm as notebook_tqdm\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "from model import BayesianBehaviorAgent\n",
    "from env.tmaze import TMazeEnv\n",
    "\n",
    "PyBulletClientMode = 'GUI' \n",
    "env = TMazeEnv(mode=PyBulletClientMode, obs='vision', seed=42)\n",
    "task_name = \"tmaze\"\n",
    "\n",
    "device = \"cuda\" if torch.cuda.is_available() else \"cpu\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "21afca3b-4479-48b5-b22c-d6b0b9d36f75",
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_tmaze(plot_exit_line=False):\n",
    "\n",
    "    zoom_coef = 2\n",
    "\n",
    "    xv = []\n",
    "    yv = []\n",
    "    cv = []\n",
    "\n",
    "    # top-left\n",
    "    xv.append([-5, -4, -4, -5, -5])\n",
    "    yv.append([-1, -1, 3, 3, -1])\n",
    "    cv.append([0.8000, 0.38000, 0.1000])\n",
    "\n",
    "    # top-right\n",
    "    xv.append([5, 4, 4, 5, 5])\n",
    "    yv.append([-1, -1, 3, 3, -1])\n",
    "    cv.append([0.1000, 0.3800, 0.8000])\n",
    "\n",
    "    # top\n",
    "    xv.append([2.5, -2.5, -2.5, 2.5, 2.5])\n",
    "    yv.append([2, 2, 3, 3, 2])\n",
    "    cv.append([0.5200, 0.5200, 0.5200])\n",
    "\n",
    "    # middle-left\n",
    "    xv.append([-1.5, -4, -4, -1.5, -1.5])\n",
    "    yv.append([-1, -1, 0, 0, -1])\n",
    "    cv.append([0.8000, 0.5000, 0.5000])\n",
    "\n",
    "    # middle-right\n",
    "    xv.append([1.5, 4, 4, 1.5, 1.5])\n",
    "    yv.append([-1, -1, 0, 0, -1])\n",
    "    cv.append([0.5000, 0.5000, 0.8000])\n",
    "\n",
    "    # bottom-left\n",
    "    xv.append([-1.5, -1.5, -0.5, -0.5, -0.5])\n",
    "    yv.append([-4, 0, 0, -4, -4])\n",
    "    cv.append([0.5200, 0.5200, 0.5200])\n",
    "\n",
    "    # bottom-right\n",
    "    xv.append([1.5, 1.5, 0.5, 0.5, 0.5])\n",
    "    yv.append([-4, 0, 0, -4, -4])\n",
    "    cv.append([0.5200, 0.5200, 0.5200])\n",
    "\n",
    "    # bottom\n",
    "    xv.append([-1.5, -1.5, 1.5, 1.5, 1.5])\n",
    "    yv.append([-4, -5, -5, -4, -4])\n",
    "    cv.append([0.7200, 0.2400, 0.7200])\n",
    "\n",
    "    if plot_exit_line:\n",
    "        # exit line\n",
    "        xv.append([-4, -2.5, -2.5, -4, -4])\n",
    "        yv.append([2, 2, 2.05, 2.05, 2])\n",
    "        cv.append([0.2200, 0.8200, 0.2200])\n",
    "\n",
    "        # exit line\n",
    "        xv.append([4, 2.5, 2.5, 4, 4])\n",
    "        yv.append([2, 2, 2.05, 2.05, 2])\n",
    "        cv.append([0.2200, 0.8200, 0.2200])\n",
    "\n",
    "    for i in range(len(xv)):\n",
    "        plt.fill([xi * zoom_coef for xi in xv[i]], \n",
    "                 [yi * zoom_coef for yi in yv[i]], \n",
    "                 color=cv[i], \n",
    "                 edgecolor='none')\n",
    "\n",
    "    plt.xlim([-10.5, 10.5])\n",
    "    plt.ylim([-10.5, 6.5])\n",
    "    plt.axis('off')\n",
    "    plt.box(False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c8f7b8ce-d9c3-4525-b2f1-2c9914517730",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cb82c68c-010d-4741-808c-5816738ef9f9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "ffef24b0-5a43-4726-ba85-4b59e7861eed",
   "metadata": {},
   "source": [
    "## Load agent model (please change the model path in your case)\n",
    "### The model can be downloaded at the Release page of this repo\n",
    "https://github.com/oist-cnru/The-Bayesian-Behavior-Framework/releases/tag/demo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "78b5ebb4-bcf9-46fe-bab5-52d28dafc0aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "agent = torch.load(\"pretrained_agent_example.model\", map_location=device)\n",
    "agent.device = device"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9fdcbd36-2781-45cc-bd8c-f0edf161237f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "65bd86bc-ae08-4cf5-bde8-e48e4aaabbcf",
   "metadata": {},
   "source": [
    "## Define the goal observation (here use the observation at start position as example)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "23465860-92a7-4495-9f69-f5507a1958c8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "goal_obs = env.reset()\n",
    "\n",
    "plt.imshow(goal_obs.swapaxes(0,2).swapaxes(0,1))\n",
    "plt.axis('off')\n",
    "plt.title(\"goal observation (360 degree camera image)\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c2d735aa-1489-4d4c-a2f3-2f176734be37",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "16256bc8-f4a7-4062-857a-ce65925bd914",
   "metadata": {},
   "source": [
    "## Run goal-directed planning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "330b5c1c-3b0f-43f5-a14f-8b04572cc244",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAAFeCAYAAAACFmkBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAgUlEQVR4nO3deVxUZf//8fcAsi8qIosLIu5UmqhobpgWmWmUmdoGWlrmkql1p99yq1sz6/5ZubeoWd5Z5la3e6ltZolaKmbuG4GisoiCAuf3hzE5goZ6ZBx4PR+PedRcc805n2uYpnnPuc51LIZhGAIAAAAAEznZuwAAAAAApQ9BAwAAAIDpCBoAAAAATEfQAAAAAGA6ggYAAAAA0xE0AAAAAJiOoAEAAADAdAQNAAAAAKYjaAAAAAAwXakIGtHR0YqOjr6m51osFo0ePdrUem52Bw4ckMVi0ezZs697W+vWrZPFYtG6deusbfHx8apRo8Z1b/tmMnr0aFksFnuXcdMqeE+9+eab9i4FAADcJG6KoGGxWIp1u/jLbEk6fPiwxowZo2bNmqlChQqqVKmSoqOjtWbNGrvUg6IlJSVp9OjR2rp1q71LKbapU6eaEvhKyrJlyxwimE+bNk3dunVT9erVZbFYFB8ff9m+aWlp6tu3rwICAuTl5aV27dpp8+bNRfZdunSpGjduLHd3d1WvXl2jRo1Sbm7uDRoFAACOzcXeBUjS3Llzbe5/9NFHWr16daH2+vXrF/n8VatW3bDaJGnJkiWaMGGCYmNjFRcXp9zcXH300Ue666679OGHH6pXr143dP+O5r333lN+fn6J7zcpKUljxoxRjRo11KhRoxLf/7WYOnWqKlWqdMUvwjeTZcuWacqUKTd92JgwYYIyMzPVrFkz/fnnn5ftl5+fr06dOunXX3/VCy+8oEqVKmnq1KmKjo5WQkKCateube27fPlyxcbGKjo6Wu+++662bdum1157TceOHdO0adNKYlgAADiUmyJoPPbYYzb3f/rpJ61evbpQ+6XOnDkjT09Pubq63sjy1K5dOx06dEiVKlWytj3zzDNq1KiRRo4cSdC4RLly5f6xT25urvLz82/43640ycrKkpeXl73LcAjr16+3Hs3w9va+bL8FCxboxx9/1Oeff66HHnpIkvTwww+rTp06GjVqlObNm2ftO2zYMN12221atWqVXFwufHT6+vpq3Lhxeu6551SvXr0bOygAABzMTTF1qjiio6N1yy23KCEhQW3atJGnp6dGjBhhfeziczTOnTunkSNHKjIyUn5+fvLy8lLr1q21du3aa9p3RESETciQJDc3N9177706cuSIMjMzr2m7Z8+e1aBBg1SpUiX5+PioS5cuOnr0aJHnjWzZskUdO3aUr6+vvL291b59e/300082fU6ePKlhw4bp1ltvlbe3t3x9fdWxY0f9+uuv11TfpY4cOaLY2Fh5eXmpcuXKev7555WTk1Oo36XnaFw8f3/SpEkKDw+Xm5ubEhMTJUm///67HnroIVWsWFHu7u5q0qSJli5dWmi7aWlpev7551WjRg25ubmpatWqeuKJJ5Samqp169apadOmkqRevXpZp9tdPC1p48aNuueee+Tn5ydPT0+1bdtWP/zwQ6H9fP/992ratKnc3d0VHh6uGTNmXNPrlZycrF69eqlq1apyc3NTcHCw7r//fh04cECSVKNGDe3YsUPr16+31lvwPp49e7YsFovWr1+vZ599VpUrV1bVqlWt216+fLlat24tLy8v+fj4qFOnTtqxY4fN/uPj4+Xt7a2jR48qNjZW3t7eCggI0LBhw5SXl2fT98SJE3r88cfl6+ur8uXLKy4uTr/++qvNaxgfH68pU6ZIsp3ueKmZM2da/8ZNmzbVL7/8ck2v3/UIDQ0t1jk1CxYsUGBgoB588EFrW0BAgB5++GEtWbLE+v5OTExUYmKi+vbtaw0ZkvTss8/KMAwtWLDA/EEAAODgboojGsV14sQJdezYUT169NBjjz2mwMDAIvtlZGTo/fffV8+ePdWnTx9lZmbqgw8+UExMjH7++WfTptUkJyfL09NTnp6e1/T8+Ph4ffbZZ3r88cfVvHlzrV+/Xp06dSrUb8eOHWrdurV8fX314osvqly5cpoxY4aio6O1fv16RUVFSZL27dunxYsXq1u3bgoLC1NKSopmzJihtm3bKjExUSEhIdc81rNnz6p9+/Y6dOiQBg0apJCQEM2dO1fffPNNsbcxa9YsZWdnq2/fvnJzc1PFihW1Y8cOtWzZUlWqVNFLL70kLy8vffbZZ4qNjdUXX3yhBx54QJJ0+vRptW7dWjt37lTv3r3VuHFjpaamaunSpTpy5Ijq16+vsWPHauTIkerbt69at24tSbrjjjskSd988406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Bc2aNUuTJk1Sz549r2tboaGhys/P1/79+21+Qd+zZ49Nv4CAAHl6emrXrl2FtvH777/LycnJ+sVnwYIFateunT744AObfmlpaYVWzbqWerdv3y7DMGxe06LqKq6CqWDlypX7x1+zw8PDtX379iv2udwUqvDwcEkXfu2/0n4CAgLk4eFhPWpwsWsdZ3h4uIYOHaqhQ4dq9+7datSokd566y19/PHHV6z5StuTpMqVK5t2BCA0NFRr1661Lhdd4NL3onT19RbX4cOHi320ce3atTarzF2PRo0a6bvvvlN+fr7NCeEbN26Up6en6tSpY+0nSZs2bbIJFUlJSTpy5MhVTSEEAKCscKhzNIqr4FfVi39F3bhxozZs2HDN25w4caLefPNNjRgxQs8999x111jwC/7UqVNt2t99912b+87Ozrr77ru1ZMkS67KokpSSkqJ58+apVatW1ukyzs7OhX45/vzzz63nOVyPe++9V0lJSTbLeJ45c0YzZ8685m1WrlxZ0dHRmjFjRpG/Kl/8C3fXrl3166+/atGiRYX6FYy54BoTaWlpNo9HRkYqPDxcb775pk6fPn3Z/Tg7OysmJkaLFy/WoUOHrI/v3LlTK1euvKqxnTlzxjr9pkB4eLh8fHxsjpx4eXkVqvdKYmJirNduuHhK4KVjuRoxMTE6f/683nvvPWtbfn6+dSnbi13uNb5e9jpH46GHHlJKSooWLlxobUtNTdXnn3+uzp07W8/JiIiIUL169TRz5kybKYnTpk2TxWKxOXcJAABcUCqPaNx3331auHChHnjgAXXq1En79+/X9OnT1aBBgyK/aP6TRYsW6cUXX1Tt2rVVv35966/RBe666y7rsqQHDhxQWFiY4uLibK7hcKnIyEh17dpVkyZN0okTJ6zL2/7xxx+SbH85fu2117R69Wq1atVKzz77rFxcXDRjxgzl5OTojTfesBn32LFj1atXL91xxx3atm2bPvnkE5uTyK9Vnz59NHnyZD3xxBNKSEhQcHCw5s6de81L+xaYMmWKWrVqpVtvvVV9+vRRzZo1lZKSog0bNujIkSPWa4C88MILWrBggbp166bevXsrMjJSJ0+e1NKlSzV9+nQ1bNhQ4eHhKl++vKZPny4fHx95eXkpKipKYWFhev/999WxY0dFRESoV69eqlKlio4ePaq1a9fK19dXX375pSRpzJgx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\n",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAAFeCAYAAAACFmkBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9tUlEQVR4nO3dZ3hU1f728XsSSC9ACCGhhoAQkBqKSAuCRkQwUgRsCSCoNBHQI4g0OSDNJ0oHFTgoR5SuUkTa8SgiBOmC9BYJNYWShCT7ecE/cxgSMOBOhgnfz3XNBbNmzd6/NRnC3LP3WttiGIYhAAAAADCRk70LAAAAAFDwEDQAAAAAmI6gAQAAAMB0BA0AAAAApiNoAAAAADAdQQMAAACA6QgaAAAAAExH0AAAAABgOoIGAAAAANPdt0EjPDxc4eHh9/Rci8WiESNGmFrP/e7YsWOyWCyaO3fu397Wxo0bZbFYtHHjRmtbdHS0ypcv/7e3fT8ZMWKELBaLvcu4b2W9pyZOnGjvUgAAgAPKs6BhsVhydbv5w2x+unbtmrp3766HH35Yvr6+8vLyUs2aNfXRRx/p+vXrdqkJ2cXFxWnEiBHasWOHvUvJtWnTppkS+PLLypUrHSKYT58+XR07dlTZsmVlsVgUHR19274JCQnq2bOn/P395enpqebNm2v79u059l2xYoXq1KkjNzc3lS1bVsOHD1d6enq+bBMAgIKsUF5teP78+Tb3//Wvf2nt2rXZ2kNDQ3N8/vfff59XpUm6ETT27t2rp556SuXLl5eTk5N+/vlnvfnmm9qyZYsWLFiQp/t3NLNnz1ZmZma+7zcuLk4jR45U+fLlVatWrXzf/72YNm2aihcvfscPwveTlStXaurUqfd92Bg3bpySk5NVv359/fnnn7ftl5mZqdatW2vnzp166623VLx4cU2bNk3h4eGKjY1VpUqVrH1XrVqlyMhIhYeHa/Lkydq9e7dGjx6ts2fPavr06Xm6TQAACro8Cxovvviizf1ffvlFa9euzdZ+q6tXr8rDw0MuLi55VZokqVixYvrll19s2l577TX5+vpqypQp+vDDD1WyZMk8rcGRFC5c+C/7pKenKzMzM89/dgXJlStX5Onpae8yHMKmTZusRzO8vLxu22/RokX6+eef9fXXX6tDhw6SpOeee04PPfSQhg8fbvMlwqBBg1SjRg19//33KlToxq9DHx8fjRkzRm+88YaqVKmSZ9sEAKCgs+scjfDwcD388MOKjY1V06ZN5eHhoSFDhlgfu3mORlpamoYNG6awsDD5+vrK09NTTZo00YYNG0ytKWseQkJCwj09/9q1a+rXr5+KFy8ub29vtW3bVqdPn85x3shvv/2mVq1aycfHR15eXmrRokW28HPx4kUNGjRI1atXl5eXl3x8fNSqVSvt3Lnznuq71alTpxQZGSlPT0+VKFFCb775plJTU7P1u3WOxs3n78fExCgkJESurq7at2+fJGn//v3q0KGDihUrJjc3N9WtW1crVqzItt2EhAS9+eabKl++vFxdXVW6dGm9/PLLOn/+vDZu3Kh69epJkrp27Wo93e7m05K2bNmiJ598Ur6+vvLw8FCzZs30008/ZdvPf//7X9WrV09ubm4KCQnRzJkz7+n1OnPmjLp27arSpUvL1dVVgYGBeuaZZ3Ts2DFJN94/e/fu1aZNm6z1Zr2P586dK4vFok2bNqlXr14qUaKESpcubd32qlWr1KRJE3l6esrb21utW7fW3r17bfYfHR0tLy8vnT59WpGRkfLy8pK/v78GDRqkjIwMm74XLlzQSy+9JB8fHxUpUkRRUVHauXOnzWsYHR2tqVOnSrI93fFWs2bNsv6M69Wrp61bt97T6/d3lCtXLldzahYtWqSAgAC1a9fO2ubv76/nnntOy5cvt76/9+3bp3379qlnz57WQCBJvXr1kmEYWrRoUZ5uEwCAgi7Pjmjk1oULF9SqVSt17txZL774ogICAnLsl5SUpE8++URdunRRjx49lJycrE8//VQRERH69ddf7/m0mrS0NCUlJenatWvatm2bJk6cqHLlyqlixYr3tL3o6Gh99dVXeumll/TII49o06ZNat26dbZ+e/fuVZMmTeTj46O3335bhQsX1syZMxUeHq5NmzapQYMGkqQjR45o2bJl6tixo4KDgxUfH6+ZM2eqWbNm2rdvn4KCgu6pTulGKGrRooVOnDihfv36KSgoSPPnz9f69etzvY05c+YoJSVFPXv2lKurq4oVK6a9e/eqUaNGKlWqlN555x15enrqq6++UmRkpBYvXqxnn31WknT58mU1adJEv//+u7p166Y6dero/PnzWrFihU6dOqXQ0FCNGjVKw4YNU8+ePdWkSRNJ0qOPPipJWr9+vVq1aqWwsDANHz5cTk5OmjNnjh577DH9+OOPql+/viRp9+7deuKJJ+Tv768RI0YoPT1dw4cPv+177U7at2+vvXv3qm/fvipfvrzOnj2rtWvX6sSJEypfvrxiYmLUt29feXl56d1335WkbPvp1auX/P39NWzYMF25ckXSjVMNo6KiFBERoXHjxunq1auaPn26GjdurN9++80m5GVkZCgiIkINGjTQxIkT9cMPP2jSpEkKCQnR66+/LunGqT5t2rTRr7/+qtdff11VqlTR8uXLFRUVZVPLq6++qri4uBxPa8yyYMECJScn69VXX5XFYtH48ePVrl07HTly5I5HujIzM3Xx4sVcva6+vr65OmqWG7/99pvq1KkjJyfb71Hq16+vWbNm6Y8//lD16tX122+/SZLq1q1r0y8oKEilS5e2Pp5X2wQAoMAz8knv3r2NW3fXrFkzQ5IxY8aMbP2bNWtmNGvWzHo/PT3dSE1Ntelz6dIlIyAgwOjWrZtNuyRj+PDhuarr3//+tyHJeqtbt66xa9eu3A3qFrGxsYYko3///jbt0dHR2WqKjIw0XFxcjMOHD1vb4uLiDG9vb6Np06bWtpSUFCMjI8Nme0ePHjVcXV2NUaNG2bRJMubMmZPremNiYgxJxldffWVtu3LlilGxYkVDkrFhwwZre1RUlFGuXLls+/Px8THOnj1rs90WLVoY1atXN1JSUqxtmZmZxqOPPmpUqlTJ2jZs2DBDkrFkyZJstWVmZhqGYRhbt27NcVyZmZlGpUqVjIiICGtfwzCMq1evGsHBwcbjjz9ubYuMjDTc3NyM48ePW9v27dtnODs7Z3tP3smlS5cMScaECRPu2K9atWo2790sc+bMMSQZjRs3NtLT063tycnJRpEiRYwePXrY9D9z5ozh6+tr0x4VFWVIsvnZG4Zh1K5d2wgLC7PeX7x4sSHJiImJsbZlZGQYjz32WLbXM6d/m4bxv5+xn5+fcfHiRWv78uXLDUnGN998c8fXIev5ubnd/F7LDU9PTyMqKuq2j936O8EwDOO7774zJBmrV682DMMwJkyYYEgyTpw4ka1vvXr1jEceeSRPtwkAQEFn9yMarq6u6tq161/2c3Z2lrOzs6Qb35QmJCQoMzNTdevWve3KL7nRvHlzrV27VgkJCVq3bp127txp/Zb5bq1evVrSjW+sb9a3b1+b030yMjL0/fffKzIyUhUqVLC2BwYG6vnnn9fs2bOVlJQkHx8fubq62jwvISFBXl5eqly58t8at3RjEnBgYKD1nHNJ8vDwUM+ePfX222/nahvt27eXv7+/9f7Fixe1fv16jRo1SsnJyUpOTrY+FhERoeHDh+v06dMqVaqUFi9erJo1a1qPcNzsr06R2bFjhw4ePKihQ4fqwoULNo+1aNFC8+fPV2ZmpgzD0Jo1axQZGamyZcta+4SGhioiIkIrV67M1Tglyd3dXS4uLtq4caO6d++uokWL5vq5N+vRo4f1vSzJ+v7r0qWLzp8/b213dnZWgwYNcjw98LXXXrO536RJE5sjEqtXr1bhwoXVo0cPa5uTk5N69+59V0esJKlTp042Y806snTkyJE7Pq9kyZJau3ZtrvZRs2bNu6rpTq5du2bz7yaLm5ub9fGb/7xd36SkpDzdJgAABZ3dg0apUqVyPXl43rx5mjRpkvbv32+zBG1wcPA97z8gIMB6akuHDh00ZswYPf744zp48OBdTwY/fvy4nJycstVz62lY586d09WrV1W5cuVs2wgNDVVmZqZOnjypatWqKTMzUx999JGmTZumo0eP2pyH7+fnd1f15VRvxYoVs32oz6mu27l1rIcOHZJhGHrvvff03nvv5fics2fPqlSpUjp8+LDat29/94VLOnjwoCRlOxXoZomJiUpNTdW1a9dsVgXKUrly5bsKGq6urho3bpwGDhyogIAAPfLII3r66af18ssv39V75dbXLGssjz32WI79fXx8bO67ubnZhDtJKlq0qC5dumS9f/z4cQUGBsrDw8Om372cEnhzQMvalySb/eXEzc1NLVu2vOv9/V3u7u45zjNKSUmxPn7zn7frm/V4Xm0TAICCzu5BI7f/8X7++eeKjo5WZGSk3nrrLZUoUULOzs4aO3asDh8+bFo9HTp00Lvvvqvly5fr1VdfNW2792rMmDF677331K1bN73//vsqVqyYnJyc1L9/f7ssN3urW39+WTUNGjRIEREROT7nXue/5LSfCRMm3HZ+jpeXV44f+P6O/v37q02bNlq2bJnWrFmj9957T2PHjtX69etVu3btXG3jdq/Z/PnzcwwsN08qlmRzNCQ/3G5/hmHc8XkZGRk6d+5crvZRrFgx01YrCwwMzHH526y2rHlNgYGB1vYyZcpk65s1xyevtgkAQEFn96CRW4sW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1a9fP3388ccaMmSIQkNDJcn6562uXbum8PBwHTp0SH369FFwcLC+/vprRUdHKyEhQW+88YZN/wULFig5OVmvvvqqLBaLxo8fr3bt2unIkSM2ry8KBothGIYZG4rtVsqMzfxtYZ+dtncJABxEqW6x9i5BknT6szB7lwDkubZt22rdunU6ePCggoKCJEmHDh1SaGio0tPTlfVxZOfOnapVq5ZeeeUVzZ492/r8t956SxMnTtT69evVvHlzSTc+5Lq7u9vs57XXXtP8+fN18eJFubq6Srqx6tTGjRvvOLn53LlzKl26tMLDw7Vq1So5Od046WPq1Knq06ePPvvsM3Xt2lXSjW/1N23apEmTJmnAgAGSpLS0NDVo0EBxcXE6deqUChcurMjISB06dEh79uy57X5feeUVrVy5Urt375afn5+1vUuXLlq1apX+/PNPubu7a+PGjWrevLkqVKigPXv22Ix7yJAhmjhxouLj41W0aFFrPQEBAWrXrp0+/fTT275ev/zyixo2bKh//etfeumllyRJixYtUseOHbVhw4ZsRy+y7mcd4fjoo4/Uv39/ff7553rhhRckSdevX1ezZs20e/duxcXFydvbW8eOHVNwcLD8/Px08OBBa50rVqzQM888o2+++UZPP/30bV8nOCZOnQIAAHkqIyNDP/zwgyIjI60hQ5IqVqyoVq1a2fRduXKlJFk/wGcZOHCgJOm7776ztt38oTk5OVnnz59XkyZNdPXqVe3fv/+uavzhhx+Ulpam/v37W0OGJPXo0UM+Pj42+5WkQoUK6dVXX7Xed3Fx0auvvqqzZ88qNvbGlxhFihTRqVOnbntqkGEYWrx4sdq0aSPDMHT+/HnrLSIiQomJidq+fbvNc6KiorKFhU6dOun69etasmSJte37779XQkKCOnXqZG27+XnXr1/XhQsXVLFiRRUpUiTbfnJr5cqVKlmypLp06WJtK1y4sPr166fLly9r06ZN2WrNChmS1KRJE0nSkSNH7mn/uL8RNAAAQJ46e/asrl27pooVK2Z77Na248ePy8nJKVt7yZIlVaRIER0/ftzatnfvXj377LPy9fWVj4+P/P399eKLL0qSEhMT76rGrO1WrlzZpt3FxUUVKlSw2a8kBQUFydPT06btoYcekiTrkZN//OMf8vLyUv369VWpUiX17t1bP/30k7X/uXPnlJCQoFmzZsnf39/mlnX05OzZszb7CA4OzlZ7zZo1VaVKFS1cuNDatnDhQhUvXlyPPfaYte3atWsaNmyYypQpI1dXVxUvXlz+/v5KSEi469cry/Hjx1WpUiWbcCb971SrW1+3smXL2tzPCh2XLl26p/3j/sYcDQAAcN+5dYL4rRISEtSsWTP5+Pho1KhRCgkJkZubm7Zv365//OMf+b4aU05CQ0N14MABffvtt1q9erUWL16sadOmadiwYRo5cqS1xhdffDHb/IosNWrUsLl/69GMLJ06ddI///lPnT9/Xt7e3lqxYoW6dOmiQoX+91Gvb9++mjNnjvr376+GDRvK19dXFotFnTt3zrfXy9nZOcd2k87kx32GoAEAAPJUiRIl5ObmpkOHDmV77Na2cuXKKTMzUwcPHrSZgBwfH6+EhASVK1dO0o05AhcuXNCSJUvUtGlTa7+jR4/eU41Z2z1w4IAqVKhgbU9LS9PRo0fVsmVLm/5xcXG6cuWKzVGNP/74Q5Jsrj3h6empTp06qVOnTkpLS1O7du30z3/+U4MHD5a/v7+8vb2VkZGRbft3q1OnTho5cqQWL16sgIAAJSUlqXPnzjZ9Fi1apKioKE2aNMnalpKSkm1Vrb8KeTcrV66cdu3apczMTJujGlmnrmW9rngwceoUAADIU87OzmrZsqWWLVumuLg4a/uhQ4e0atUqm75PPfWUJCkmJsam/cMPP5QktW7d2rpNyfab8LS0NE2bNu2eamzZsqVcXFz08ccf22zz008/VWJionW/WdLT0zVz5kybfc+cOVP+/v4KC7uxwMOFCxdsnuPi4qKqVavKMAxdv35dzs7Oat++vRYvXpzjhPFz587luv7Q0FBVr15dCxcu1MKFCxUYGGgTwKQbr9mtRw4mT56cbTngrPB0u2V9b/bUU0/pzJkzNqdtpaena/LkyfLy8lKzZs1yPQYUPBzRAAAAeW7EiBH6/vvv1ahRI73++uvKyMjQlClT9PDDD2vHjh3WfjVr1lRUVJRmzZplPT3q119/1bx58xQZGWldcerRRx9V0aJFFRUVpX79+slisWj+/Pn3fAqOv7+/Bg8erJEjR+rJJ59U27ZtdeDAAU2bNk316tWzzv3IEhQUpHHjxunYsWN66KGHtHDhQu3YsUOzZs2yLtP6xBNPqGTJkmrUqJECAgL0+++/a8qUKWrdurW8vb0lSR988IE2bNigBg0aqEePHqpataouXryo7du364cfftDFixdzPYZOnTpp2LBhcnNzU/fu3bPNm3j66ac1f/58+fr6qmrVqtq8ebN++OEHm9WuJKlWrVpydnbWuHHjlJiYKFdXVz322GMqUaJEtn327NlTM2fOVHR0tGJjY1W+fHktWrRIP/30k2JiYqzjxIOJoAEAAPJcWFiYVq1apUGDBum9995TmTJlNGrUKP3+++/ZVoj65JNPVKFCBc2dO1dLly5VyZIlNXjwYA0fPtzax8/PT99++60GDhyooUOHqmjRonrxxRfVokUL63Uj7taIESPk7++vKVOm6M0331SxYsXUs2dPjRkzJts1HooWLap58+apb9++mj17tgICAjRlyhT16NHD2ufVV1/VF198oQ8//FCXL19W6dKl1a9fPw0dOtTaJyAgQL/++qtGjRqlJUuWaNq0afLz81O1atU0bty4u6q/U6dOGjp0qK5evWqz2lSWjz76SM7Ozvriiy+UkpKiRo0a6Ycffsj2epUsWVIzZszQ2LFj1b17d2VkZGjDhg05Bo2spXffeecdzZs3T0lJSapcubLmzJmj6Ojou6ofBQ/X0QDwwOI6GoD9RUZGau/evTp48KC9SwFgMuZoAACAfHHt2jWb+wcPHtTKlSuzXRQOQMHAqVMAACBfVKhQQdHR0dbrUkyfPl0uLi56++237V0agDxA0AAAAPniySef1L///W+dOXNGrq6uatiwocaMGaNKlSrZuzQAeYCgAQAA8sWcOXPsXQKAfMQcDQAAAACmI2gAAAAAMB2nTgEA7Gbq1KmaMGGCzpw5o5o1a2ry5MmqX79+rp6bmZmpuLg4eXt7y2Kx5HGlAIAshmEoOTlZQUFB2S4MeTOCBgDALhYuXKgBAwZoxowZatCggWJiYhQREaEDBw7keGGwW8XFxalMmTL5UCkAICcnT55U6dKlb/s4QQMAYBcffvihevTooa5du0qSZsyYoe+++06fffaZ3nnnnb98vre3t6Qb/9H5+Pjccx1dunS55+fiwTZ//vxsbYUK5e9Hqz59+uTr/lBwxMTE5Niem/dwUlKSypQpY/09fDsEDQBAvktLS1NsbKwGDx5sbXNyclLLli21efPmHJ+Tmpqq1NRU6/3k5GRJko+Pz98KGoULF77n5+LBltP7Lr+DhouLS77uDwXH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\n",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_trials_planning = 3  \n",
    "\n",
    "for episode in range(num_trials_planning):\n",
    "\n",
    "    goal_directed_strength = 100 ** episode  # habitual behavior's constraint is smaller if this value is larger \n",
    "    # increasing goal_directed_strength in later trials\n",
    "\n",
    "    goal_function = lambda x: goal_directed_strength * torch.sum(\n",
    "        ((torch.sigmoid(x) - torch.from_numpy(goal_obs).to(device=device)).abs().sum(-3) < 0.25).to(torch.float32), dim=[-1, -2])\n",
    "    # note this can be changed: basic rule is that the goal function should be smaller if the agent is closer to the goal\n",
    "\n",
    "    sp = env.reset()\n",
    "    agent.init_states()\n",
    "    infos = np.zeros([15 + 1, 2], dtype=np.float32)  # position information\n",
    "    infos[0] = env.info['ob']\n",
    "\n",
    "    for t in range(15):\n",
    "\n",
    "        sp, r, done, info, action = agent.step_with_env(env, sp, goal_obs, behavior='goal-directed', action_return='mean', goal_function=goal_function)     \n",
    "\n",
    "        # if t == 1:\n",
    "        #     goal_obs = sp\n",
    "\n",
    "        infos[t + 1] = info['ob']\n",
    "\n",
    "    # Visualize trajecotry\n",
    "    plt.figure(figsize=[10, 4])\n",
    "    plt.subplot(1,2,1)\n",
    "    draw_tmaze()\n",
    "    plt.plot(infos[:t + 1, 0], infos[:t + 1, 1])\n",
    "    plt.title(\"Trial {}, goal_directed_strength = {}\".format(episode + 1, goal_directed_strength))\n",
    "    plt.subplot(1,2,2)\n",
    "    plt.imshow(goal_obs.swapaxes(0,2).swapaxes(0,1))\n",
    "    plt.title(\"goal observation\")\n",
    "    plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "652b3edb-a9ab-4afe-bf3c-c4107fc50c6b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2e41f3af-fc51-42c5-9556-77ee98d3d6d3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1c012271-100c-4d3a-b834-7eeacf73d37f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e8b26da7-188a-4a06-ae68-918bbfae2deb",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
